package com.hong.arithmetic.cas;

/**
 * @author: csh
 * @Date: 2022/8/6 21:05
 * @Description: cas工具类 该类存在一个缺陷，没有版本控制会导致aba问题
 */
public class CasV1 {
    //内存的值
    private int value;
    //获取值
    public synchronized int getValue() {
        return value;
    }

    //对比值并且设置值
    public synchronized int compareAndSwap(int defaultValue,int newValue){
        int oldValue = value;
        if(oldValue == defaultValue){
            this.value = newValue;
        }
        return oldValue;
    }

    //对比值
    public synchronized boolean compareAndSet(int defaultValue,int newValue){
        return defaultValue==compareAndSwap(defaultValue,newValue);
    }


}
